<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //1、函数参数默认值
        //在ES6以前，我们无法给一个函数参数设置默认值，只能采用变通写法：
        function add(a, b) {
            // 判断b是否为空，为空就给默认值1，不是空：b = b
            // 下面等价于: if(!b) {b = 1}
            b = b || 1;
            return a + b;
        }
        // 传一个参数
        console.log(add(10));

        //现在可以这么写：
        function add(a, b = 1) {
            return a + b;
        }
        // 传一个参数
        console.log(add(10));


        //2、箭头函数，ES6中定义函数的简写方式：
        //2.1 一个参数时：
        let print1 = function (obj) {
            console.log(obj);
        }
        // 简写为：
        let print2 = obj => console.log(obj);

        //2.2 多个参数：
        // 当箭头函数没有参数或者有多个参数，要用 () 括起来。
        // 当箭头函数函数体有多行语句，用 {} 包裹起来，表示代码块，
        // 当只有一行语句，并且需要返回结果时，可以省略 {} , 结果会自动返回。
        let sum1 = function (a, b) {
            return a + b;
        }
        // 简写为：
        let sum2 = (a, b) => {
            return a + b;
        }
        var sum3 = (a, b) => a + b;

        //2.3 对象的函数属性简写
        let person = {
            name: "jack",
            // 以前：
            eat1: function (food) {
                console.log(this.name + "在吃" + food);
            },
            // 箭头函数版：
            eat2: food => console.log(person.name + "在吃" + food),// 这里拿不到this,this是person外面的域
            // 简写版：
            eat3(food) {
                console.log(this.name + "在吃" + food);
            }
        }

    </script>
</body>

</html>